package com.jimmy.medical.service;

import com.jimmy.medical.entity.*;
import com.jimmy.medical.model.OrderReport;
import com.jimmy.medical.model.SignInfo;

import java.util.List;


/**
 * 体检工单Service - 备单、陪检、取体检报告
 * @author jimmy
 */
public interface IPhysicalCheckFlowOrderService extends IFlowOrderService {
    //备单部分
    /**
     * 确认接单
     * @param flowOrderId
     * @param userId
     * @return
     */
    Long saveAffirmInfo(Long flowOrderId, Long userId);

    /**
     * 备单登记
     * @param info
     * @return
     */
    Long saveSignInfo(SignInfo info);

    /**
     * 备单核验
     * @param flowOrderId
     * @param userId
     * @return
     */
    Long saveSignCheckInfo(Long flowOrderId, Long userId, String photoIds);

    /**
     * 电话通知
     * @param call
     * @return
     */
    Long saveSignNoticeInfo(PhoneCall call);

    /**
     * 短信通知
     * @param message
     * @return
     */
    Long saveSignMessageFlow(Message message);

    /**
     * 提交备单
     * @param flowOrderId
     * @param userId
     * @return
     */
    FlowOrder submitSign(Long flowOrderId, Long userId);

    //陪检部分
    /**
     * 接号
     * @param flowOrderId
     * @param userId
     * @return
     */
    Long saveAcceptInfo(Long flowOrderId, Long userId);

    /**
     * 电话通知
     * @param call
     * @return
     */
    Long saveNoticeInfo(PhoneCall call);

    /**
     * 短信通知
     * @param message
     * @return
     */
    Long saveMessageFlow(Message message);

    /**
     * 整理资料
     * @param flowOrderId
     * @param userId
     * @return
     */
    Long saveCollatingInfo(Long flowOrderId, Long userId);

    /**
     * 自检仪容
     * @param flowOrderId
     * @param userId
     * @param photoId
     * @return
     */
    Long saveAppearance(Long flowOrderId, Long userId, Long photoId);

    /**
     * 费用处理
     * @param flowOrderId
     * @param userId
     * @return
     */
    Long saveFeeProcess(Long flowOrderId, Long userId);

    /**
     * 陪检
     * @param flowOrderId
     * @param userId
     * @param photoIds
     * @return
     */
    Long savePhysicalCheck(Long flowOrderId, Long userId, String photoIds);

    /**
     * 提交陪检
     * @param flowOrderId
     * @param userId
     * @return
     */
    FlowOrder submitPhysicalCheck(Long flowOrderId, Long userId);
    //取体检报告部分
    /**
     * 确认接单
     * @param flowOrderId
     * @param userId
     * @return
     */
    Long saveReportAffirmInfo(Long flowOrderId, Long userId);

    /**
     * 取报告
     * @param flowOrderId
     * @param userId
     * @param photoIds
     * @return
     */
    Long saveTakeReportInfo(Long flowOrderId, Long userId, String photoIds);

    /**
     * 电话通知
     * @param call
     * @return
     */
    Long saveReportNoticeInfo(PhoneCall call);

    /**
     * 短信通知
     * @param message
     * @return
     */
    Long saveReportMessageFlow(Message message);

    /***
     * 获取体检报告指标
     * @param flowOrderId
     * @return
     */
    List<OrderExceptionData> getOrderExceptionDataList(Long flowOrderId);

    /**
     * 添加陪检记录
     * @param record
     * @param exceptionData
     * @return
     */
    Long savePhysicalCheckRecord(OrderExecutionRecord record, String exceptionData, String diagnoseData);

    /**
     * 提交取体检报告
     * @param flowOrderId
     * @param userId
     * @return
     */
    FlowOrder submitReport(Long flowOrderId, Long userId);
}
